const express = require('express');
const multer = require('multer');
const fs = require('fs');
const user = express.Router();
const {User} = require('../db/mongoose');

// 登录 + 注册
user.post('/login',(req,res)=>{
    let user = req.body;
    console.log('user',user);
    if(user.type == 'phone'){
        User.findOne({phone:user.phone},(err,data)=>{
            console.log('data',data);
            if(err) return res.status(200).json({
                code:'1001',
                message:'系统错误'
            })
            if(data == null){
                let newUser = User({
                    username:user.phone,
                    password:'',
                    phone:user.phone,                             
                    email:'',                             
                    city:'',                              
                    avatar:'avatar.png',
                    register_time:new Date().getTime(),
                });
                console.log('newUser',newUser);
                newUser.save((err)=>{
                    if(err) return res.status(200).json({
                        code:'1201',
                        message:'新建用户失败'
                    })
                    else return res.status(200).json({
                        code:'1200',
                        message:'注册成功',
                        data:newUser
                    })
                })
            }
            else{
                return res.status(200).json({
                    code:'1100',
                    message:'登录成功',
                    data
                })
            }
        })
    }
    else if(user.type == 'psw'){
        User.find({
            $or:[{username:user.username},{phone:user.username}]
        },(err,data)=>{
            console.log('data',data);
            if(err) return res.status(200).json({
                code:'1001',
                message:'系统错误'
            })
            if(data.length == 0 || data[0].password != user.password){
                return res.status(200).json({
                    code:'1103',
                    message:'用户名或密码不正确'
                })
            }
            return res.status(200).json({
                code:'1100',
                message:'登录成功',
                data:data[0]
            })
        })
    }
})

// 修改密码
user.post('/resetPsw',(req,res)=>{
    let obj = req.body;
    let user_id = req.body.id;
    let password = req.body.password;
    console.log(user_id,password);
    User.updateOne({_id:user_id},{password:password},(err,result)=>{
        console.log(result);
        if(err) return res.status(200).json({
            code:'1001',
            message:'系统错误'
        })
        if(result.modifiedCount == 0) return res.status(200).json({
            code:'1104',
            message:'用户不存在'
        })
        return res.status(200).json({
            code:'1300',
            message:'修改成功'
        })
    })
})

// 获取当前用户信息
user.post('/getUserInfo',(req,res)=>{
    let id = req.body.id;
    User.findOne({
        _id:id
    },(err,data)=>{
        if(err) return res.status(200).json({
            code:'1001',
            message:'系统错误'
        })
        if(data == null) return res.status(200).json({
            code:'1401',
            message:'未查找到当前用户'
        })
        return res.status(200).json({
            code:'1400',
            message:'查找当前登录用户成功',
            data
        })
    })
})

// 修改头像（上传文件）
const storage = multer.diskStorage({
    destination:'wwwroot/images/user/userAvatar',
    filename:(req,file,callback)=>{
        var name =  req.body.id + new Date().getTime();
        console.log('file',file);
        req.body.images = name + '.png';
        callback(null,name+'.png');
    }
})
const upload = multer({storage});
user.post('/modifyAvatar',upload.single('avatar'),(req,res)=>{
    console.log('req.body',req.body)

    let id = req.body.id;
    User.findOne({_id:id},(err,data)=>{
        if(err) return res.status(200).json({
            code:'1001',
            message:'系统错误'
        })  
        if(data == null) return res.status(200).json({
            code:'1104',
            message:'未找到当前用户'
        })
        let avatar = data.avatar;
        if(avatar == 'avatar.png'){
            User.updateOne({
                _id:id
            },{
                avatar:req.body.images
            },(err,result)=>{
                if(err) return res.status(200).json({
                    code:'1001',
                    message:'系统错误'
                })
                if(result.modifiedCount == 0) return res.status(200).json({
                    code:'1502',
                    message:'没有找到匹配的数据'
                })
                return res.status(200).json({
                    code:'1500',
                    message:'修改头像成功',
                    data:req.body.images
                })
            })
        }
        else{
            // 删除文件夹中该用户的头像文件
            fs.unlink('wwwroot/images/user/userAvatar/'+avatar,(err)=>{
                if(err) return res.status(200).json({
                    code:'1501',
                    message:'修改系统文件失败'
                })
                else {
                    console.log('Deleted file:'+avatar);
                    User.updateOne({
                        _id:id
                    },{
                        avatar:req.body.images
                    },(err,result)=>{
                        if(err) return res.status(200).json({
                            code:'1001',
                            message:'系统错误'
                        })
                        if(result.modifiedCount == 0) return res.status(200).json({
                            code:'1502',
                            message:'没有找到匹配的数据'
                        })
                        return res.status(200).json({
                            code:'1500',
                            message:'修改头像成功',
                            data:req.body.images
                        })
                    })
                }
            })
        }
    })
})

// 修改昵称
user.post('/modifyNickname',(req,res)=>{
    let id = req.body.id;
    User.findOne({
        _id:id
    },(err,data)=>{
        if(err) return res.status(200).json({
            code:'1001',
            message:'系统错误'
        })
        if(data == null) return res.status(200).json({
            code:'1401',
            message:'未查找到当前用户'
        })
        User.updateOne({
            _id:id
        },{
            nickname:req.body.nickname
        },(err,result)=>{
            if(err) return res.status(200).json({
                code:'1001',
                message:'系统错误'
            })
            console.log(result)
            if(result.modifiedCount == 0) return res.status(200).json({
                code:'1601',
                message:'修改昵称失败'
            })
            return res.status(200).json({
                code:'1600',
                message:'修改昵称成功'
            })
        })
    })
})

// 修改简介
user.post('/modifyProfile',(req,res)=>{
    let id = req.body.id;
    User.findOne({
        _id:id
    },(err,data)=>{
        if(err) return res.status(200).json({
            code:'1001',
            message:'系统错误'
        })
        if(data == null) return res.status(200).json({
            code:'1401',
            message:'未查找到当前用户'
        })
        User.updateOne({
            _id:id
        },{
            profile:req.body.profile
        },(err,result)=>{
            if(err) return res.status(200).json({
                code:'1001',
                message:'系统错误'
            })
            console.log(result)
            if(result.modifiedCount == 0) return res.status(200).json({
                code:'1701',
                message:'修改简介失败'
            })
            return res.status(200).json({
                code:'1700',
                message:'修改简介成功'
            })
        })
    })
})

// 修改淘宝账户绑定状态
user.post('/modifyBindTaoBao',(req,res)=>{
    let id = req.body.id;
    User.findOne({
        _id:id
    },(err,data)=>{
        if(err) return res.status(200).json({
            code:'1001',
            message:'系统错误'
        })
        if(data == null) return res.status(200).json({
            code:'1401',
            message:'未查找到当前用户'
        })
        User.updateOne({
            _id:id
        },{
            bindTaoBao:req.body.bindTaoBao
        },(err,result)=>{
            if(err) return res.status(200).json({
                code:'1001',
                message:'系统错误'
            })
            console.log(result)
            if(result.modifiedCount == 0) return res.status(200).json({
                code:'1801',
                message:'修改淘宝绑定状态失败'
            })
            return res.status(200).json({
                code:'1800',
                message:'修改淘宝绑定状态成功'
            })
        })
    })
})

// 修改支付宝账户绑定状态
user.post('/modifyBindAliPay',(req,res)=>{
    let id = req.body.id;
    User.findOne({
        _id:id
    },(err,data)=>{
        if(err) return res.status(200).json({
            code:'1001',
            message:'系统错误'
        })
        if(data == null) return res.status(200).json({
            code:'1401',
            message:'未查找到当前用户'
        })
        User.updateOne({
            _id:id
        },{
            bindAliPay:req.body.bindAliPay
        },(err,result)=>{
            if(err) return res.status(200).json({
                code:'1001',
                message:'系统错误'
            })
            console.log(result)
            if(result.modifiedCount == 0) return res.status(200).json({
                code:'1801',
                message:'修改支付宝绑定状态失败'
            })
            return res.status(200).json({
                code:'1800',
                message:'修改支付宝绑定状态成功'
            })
        })
    })
})

// 修改微信账户绑定状态
user.post('/modifyBindWeChat',(req,res)=>{
    let id = req.body.id;
    User.findOne({
        _id:id
    },(err,data)=>{
        if(err) return res.status(200).json({
            code:'1001',
            message:'系统错误'
        })
        if(data == null) return res.status(200).json({
            code:'1401',
            message:'未查找到当前用户'
        })
        User.updateOne({
            _id:id
        },{
            bindWeChat:req.body.bindWeChat
        },(err,result)=>{
            if(err) return res.status(200).json({
                code:'1001',
                message:'系统错误'
            })
            console.log(result)
            if(result.modifiedCount == 0) return res.status(200).json({
                code:'1801',
                message:'修改微信绑定状态失败'
            })
            return res.status(200).json({
                code:'1800',
                message:'修改微信绑定状态成功'
            })
        })
    })
})

module.exports = user;